#pragma once

#include "SFML\Graphics.hpp"
#include <vector>
#include "GameObject.hpp"
#include "IUpdateable.hpp"
#include "IDrawable.hpp"

namespace rh
{
	class GameScreen : public IDrawable, public IUpdateable
	{
	public:
		enum GameScreenState 
		{
			Uninitialized,
			Initialized
		};

	private:
		std::vector<GameObject> _gameObjects;
		GameScreenState _state;

	public:
		GameScreen(void);
		~GameScreen(void);

		virtual void Draw(sf::RenderWindow& renderWindow, const sf::RenderStates & renderState) = 0;
		virtual void Update(const sf::Time& elapsedTime, const sf::Time& totalElapsedTime) = 0;

		virtual void Initialize(void);
		GameScreenState GetGameScreenState(void);

	};
}